	m=0
	do j=1,nBoundaryFields
		if (boundaryMeshName(j)(1:4).eq.'proc') then
			do k=boundaryMeshStart(j)+1,boundaryMeshStart(j)+boundaryMeshSize(j)
				i=meshFaceOwner(k)
				l=opposingOwnerFaceLabel(k)
				
				send(m+1:m+3)=Us(1:3,l)
				send(m+4:m+6)=U(1:3,i)
				send(m+7:m+9)=Unew(1:3,i)
				send(m+10)=Ps(l)
				send(m+11)=p(i)
				send(m+12)=pnew(i)
				send(m+13)=Rhos(l)
				send(m+14)=Rho(i)
				send(m+15)=Rhonew(i)

				send(m+16:m+18) = meshCellCenters(1:3,i)

			!	if (k.eq.5051) write(14,*) send(m+1:m+15)
				m=m +  18 ! 15 !
			end do
		end if
	end do

!	write(14,*) 'm=',m

!	call MPI_Barrier(MPI_COMM_WORLD,ierr) ! Phil, 2012-02-28
!	call MPI_Alltoallv(send,sendCountsv,sDisplsv,MPI_DOUBLE_PRECISION &
!					,recv,recvCountsv,rDisplsv,MPI_DOUBLE_PRECISION,MPI_COMM_WORLD,ierr)
    ierr=0
    recv=0
    do iProc = 0,nump-1
    IF (sendCountsv(iProc+1)/=0)THEN
! recvCountsv=sendCountsv, sDisplsv=rDisplsv
! could replace sDisplsv with cumulative total from sendCountsv??? 
    call MPI_SENDRECV(send(1+sDisplsv(iProc+1)), sendCountsv(iProc+1), &
                                                        MPI_DOUBLE_PRECISION, iProc, 0, &
                      recv(1+sDisplsv(iProc+1)), sendCountsv(iProc+1), &
                                                        MPI_DOUBLE_PRECISION, iProc, 0, &
                                                        MPI_COMM_WORLD,statusp, ierr)
    ENDIF
    end do

	m=0
	do j=1,nBoundaryFields
		if (boundaryMeshName(j)(1:4).eq.'proc') then
			do k=boundaryMeshStart(j)+1,boundaryMeshStart(j)+boundaryMeshSize(j)
			!	if (k.eq.5051) write(14,*) recv(m+1:m+15)
			!		vtmp=Us(1,k)*meshSf(1,k)+Us(2,k)*meshSf(2,k)+Us(3,k)*meshSf(3,k)
				i=meshFaceOwner(k)
				l=opposingOwnerFaceLabel(k)
			!		if (rank.ge.0) then
		! Phil, 2012-02-28, start
				do j1=1,3
					uf(j1)=recv(m+j1)
					ucf(j1)=recv(m+j1+3)
					ucsf(j1)=recv(m+j1+6)
				end do
!				uf(1:3)=recv(m+1:m+3)
!				ucf(1:3)=recv(m+4:m+6)
!				ucsf(1:3)=recv(m+7:m+9)
		! Phil, 2012-02-28, end

	            ! SK changed here
!				utmp(6,100)=epsilon
!				ntimemax=20000
!				if(nstep.lt.ntimemax) then
!					propor=(nstep-1.0)/(ntimemax-1.0)
!					utmp(6,100)=1.0d0-propor+propor*epsilon
!				end if

				if(NormalChars)then
					CharN(1:3) = meshSf(1:3,k)
				else
					CharN(1:3) = meshCellCenters(1:3,i) - recv(m+16:m+18)
				end if

!				CharN(1:3) = 10d0*CharN(1:3)

!				if(rank.eq.0)then
!					write(1,*) 'Cf=', meshFaceCenters(1:3,k)
!					write(1,*) 'Cc=', meshCellCenters(1:3,i)
!					write(1,*) 'nnew=', CharN(1:3)
!					write(1,*) 'n=', meshSf(1:3,k)
!					write(1,*) '--------------------'
!				end if

!				if(rank.eq.1)then
!					write(2,*) 'Cf=', meshFaceCenters(1:3,k)
!					write(2,*) 'Cc=', meshCellCenters(1:3,i)
!					write(2,*) 'nnew=', CharN(1:3)
!					write(2,*) 'n=', meshSf(1:3,k)
!					write(2,*) '--------------------'
!				end if

				call usdefn(Usnew(1:3,k),Us(1:3,k),Us(1:3,l),uf,U(1:3,i),Unew(1:3,i),ucf,ucsf &
						   ,Psnew(k),    Ps(k),    Ps(l),    recv(m+10),   p(i),    pnew(i),    recv(m+11),   recv(m+12)     &
						   ,Rhosnew(k),  Rhos(k),  Rhos(l),   recv(m+13),  rho(i),  rhonew(i),  recv(m+14),   recv(m+15)    &
			!			   ,tsnew(k),  ts(k),  ts(l),  recv(m+13),  t(i),  tnew(i),   recv(m+14),   recv(m+15)     &
						   ,Db(k),Df(k),CharN(1:3),dt,dtminx,epsilonSmoothed) !epsilon)
!						   ,Db(k),Df(k),meshSf(1:3,k),dt,dtminx,epsilonSmoothed) !epsilon)

!				write(2,'(i3,i4,24e13.5, e20.10, 7e13.5, 8e13.5, 5f8.3,  3e13.5)') nstep, k, Usnew(1:3,k),Us(1:3,k),Us(1:3,l),uf,U(1:3,i),Unew(1:3,i),ucf,ucsf &
!							,Psnew(k),    Ps(k),    Ps(l),    recv(m+10),   p(i),    pnew(i),    recv(m+11),   recv(m+12)     &
!						   ,Rhosnew(k),  Rhos(k),  Rhos(l),   recv(m+13),  rho(i),  rhonew(i),  recv(m+14),   recv(m+15)    &
!						   ,Db(k),Df(k),meshSf(1:3,k),dt,dtminx,epsilonSmoothed !epsilon)
!
!				write(*,*) '@@@ epsilonSmoothed=', epsilonSmoothed

				Esnew(k)=Psnew(k)*((gam-1.0d0)*Rhosnew(k))**(-1)+(Usnew(1,k)**2+Usnew(2,k)**2+Usnew(3,k)**2)*0.50d0 !  ! Phil, 2012-02-28
				! Esnew(k)=Psnew(k)/((gam-1.0d0)*Rhosnew(k))+(Usnew(1,k)**2+Usnew(2,k)**2+Usnew(3,k)**2)/2.0d0    

!				if(rank.eq.0)then
!					write(1,*) 'Us=', Usnew(1:3,k)
!					write(1,*) 'P=', Psnew(k)
!					write(1,*) 'nnew=', CharN(1:3)
!					write(1,*) 'n=', meshSf(1:3,k)
!					write(1,*) '--------------------'
!				end if

!				if(rank.eq.1)then
!					write(2,*) 'Us=', Usnew(1:3,k)
!					write(2,*) 'P=', Psnew(k)
!					write(2,*) 'nnew=', CharN(1:3)
!					write(2,*) 'n=', meshSf(1:3,k)
!					write(2,*) '--------------------'
!				end if
				m=m+ 18 ! 15 !

			end do
		end if
	end do
